YES 88.616
H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/List.hs
H-Termination of the given Haskell-Program with start terms could successfully be proven:
↳ HASKELL
↳ IFR
mainModule List
| ((union :: [Ratio Int] -> [Ratio Int] -> [Ratio Int]) :: [Ratio Int] -> [Ratio Int] -> [Ratio Int]) |
module List where
| import qualified Maybe import qualified Prelude
|
| deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
deleteBy | _ _ [] | = | [] |
deleteBy | eq x (y : ys) | = | if x `eq` y then ys else y : deleteBy eq x ys |
|
| elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool
elem_by | _ _ [] | = | False |
elem_by | eq y (x : xs) | = | x `eq` y || elem_by eq y xs |
|
| nubBy :: (a -> a -> Bool) -> [a] -> [a]
nubBy | eq l | = |
nubBy' l [] | where |
nubBy' | [] _ | = | [] |
nubBy' | (y : ys) xs | |
| | elem_by eq y xs | = |
|
| | otherwise | = |
|
|
|
|
|
|
| union :: Eq a => [a] -> [a] -> [a]
|
| unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
unionBy | eq xs ys | = | xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs |
|
module Maybe where
| import qualified List import qualified Prelude
|
If Reductions:
The following If expression
if eq x y then ys else y : deleteBy eq x ys
is transformed to
deleteBy0 | ys y eq x True | = ys |
deleteBy0 | ys y eq x False | = y : deleteBy eq x ys |
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
mainModule List
| ((union :: [Ratio Int] -> [Ratio Int] -> [Ratio Int]) :: [Ratio Int] -> [Ratio Int] -> [Ratio Int]) |
module List where
| import qualified Maybe import qualified Prelude
|
| deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
deleteBy | _ _ [] | = | [] |
deleteBy | eq x (y : ys) | = | deleteBy0 ys y eq x (x `eq` y) |
|
|
deleteBy0 | ys y eq x True | = | ys |
deleteBy0 | ys y eq x False | = | y : deleteBy eq x ys |
|
| elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool
elem_by | _ _ [] | = | False |
elem_by | eq y (x : xs) | = | x `eq` y || elem_by eq y xs |
|
| nubBy :: (a -> a -> Bool) -> [a] -> [a]
nubBy | eq l | = |
nubBy' l [] | where |
nubBy' | [] _ | = | [] |
nubBy' | (y : ys) xs | |
| | elem_by eq y xs | = |
|
| | otherwise | = |
|
|
|
|
|
|
| union :: Eq a => [a] -> [a] -> [a]
|
| unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
unionBy | eq xs ys | = | xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs |
|
module Maybe where
| import qualified List import qualified Prelude
|
Replaced joker patterns by fresh variables and removed binding patterns.
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
mainModule List
| ((union :: [Ratio Int] -> [Ratio Int] -> [Ratio Int]) :: [Ratio Int] -> [Ratio Int] -> [Ratio Int]) |
module List where
| import qualified Maybe import qualified Prelude
|
| deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
deleteBy | vw vx [] | = | [] |
deleteBy | eq x (y : ys) | = | deleteBy0 ys y eq x (x `eq` y) |
|
|
deleteBy0 | ys y eq x True | = | ys |
deleteBy0 | ys y eq x False | = | y : deleteBy eq x ys |
|
| elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool
elem_by | vz wu [] | = | False |
elem_by | eq y (x : xs) | = | x `eq` y || elem_by eq y xs |
|
| nubBy :: (a -> a -> Bool) -> [a] -> [a]
nubBy | eq l | = |
nubBy' l [] | where |
nubBy' | [] vy | = | [] |
nubBy' | (y : ys) xs | |
| | elem_by eq y xs | = |
|
| | otherwise | = |
|
|
|
|
|
|
| union :: Eq a => [a] -> [a] -> [a]
|
| unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
unionBy | eq xs ys | = | xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs |
|
module Maybe where
| import qualified List import qualified Prelude
|
Cond Reductions:
The following Function with conditions
nubBy' | [] vy | = [] |
nubBy' | (y : ys) xs |
| | elem_by eq y xs | |
| | otherwise | |
|
is transformed to
nubBy' | [] vy | = nubBy'3 [] vy |
nubBy' | (y : ys) xs | = nubBy'2 (y : ys) xs |
nubBy'0 | y ys xs True | = y : nubBy' ys (y : xs) |
nubBy'1 | y ys xs True | = nubBy' ys xs |
nubBy'1 | y ys xs False | = nubBy'0 y ys xs otherwise |
nubBy'2 | (y : ys) xs | = nubBy'1 y ys xs (elem_by eq y xs) |
nubBy'3 | [] vy | = [] |
nubBy'3 | xv xw | = nubBy'2 xv xw |
The following Function with conditions
is transformed to
undefined0 | True | = undefined |
undefined1 | | = undefined0 False |
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
mainModule List
| ((union :: [Ratio Int] -> [Ratio Int] -> [Ratio Int]) :: [Ratio Int] -> [Ratio Int] -> [Ratio Int]) |
module List where
| import qualified Maybe import qualified Prelude
|
| deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
deleteBy | vw vx [] | = | [] |
deleteBy | eq x (y : ys) | = | deleteBy0 ys y eq x (x `eq` y) |
|
|
deleteBy0 | ys y eq x True | = | ys |
deleteBy0 | ys y eq x False | = | y : deleteBy eq x ys |
|
| elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool
elem_by | vz wu [] | = | False |
elem_by | eq y (x : xs) | = | x `eq` y || elem_by eq y xs |
|
| nubBy :: (a -> a -> Bool) -> [a] -> [a]
nubBy | eq l | = |
nubBy' l [] | where |
nubBy' | [] vy | = | nubBy'3 [] vy |
nubBy' | (y : ys) xs | = | nubBy'2 (y : ys) xs |
|
nubBy'0 | y ys xs True | = | y : nubBy' ys (y : xs) |
|
nubBy'1 | y ys xs True | = | nubBy' ys xs |
nubBy'1 | y ys xs False | = | nubBy'0 y ys xs otherwise |
|
nubBy'2 | (y : ys) xs | = | nubBy'1 y ys xs (elem_by eq y xs) |
|
nubBy'3 | [] vy | = | [] |
nubBy'3 | xv xw | = | nubBy'2 xv xw |
|
|
|
|
| union :: Eq a => [a] -> [a] -> [a]
|
| unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
unionBy | eq xs ys | = | xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs |
|
module Maybe where
| import qualified List import qualified Prelude
|
Let/Where Reductions:
The bindings of the following Let/Where expression
nubBy' l [] |
where |
nubBy' | [] vy | = nubBy'3 [] vy |
nubBy' | (y : ys) xs | = nubBy'2 (y : ys) xs |
|
|
nubBy'0 | y ys xs True | = y : nubBy' ys (y : xs) |
|
|
nubBy'1 | y ys xs True | = nubBy' ys xs |
nubBy'1 | y ys xs False | = nubBy'0 y ys xs otherwise |
|
|
nubBy'2 | (y : ys) xs | = nubBy'1 y ys xs (elem_by eq y xs) |
|
|
nubBy'3 | [] vy | = [] |
nubBy'3 | xv xw | = nubBy'2 xv xw |
|
are unpacked to the following functions on top level
nubByNubBy' | xx [] vy | = nubByNubBy'3 xx [] vy |
nubByNubBy' | xx (y : ys) xs | = nubByNubBy'2 xx (y : ys) xs |
nubByNubBy'3 | xx [] vy | = [] |
nubByNubBy'3 | xx xv xw | = nubByNubBy'2 xx xv xw |
nubByNubBy'0 | xx y ys xs True | = y : nubByNubBy' xx ys (y : xs) |
nubByNubBy'2 | xx (y : ys) xs | = nubByNubBy'1 xx y ys xs (elem_by xx y xs) |
nubByNubBy'1 | xx y ys xs True | = nubByNubBy' xx ys xs |
nubByNubBy'1 | xx y ys xs False | = nubByNubBy'0 xx y ys xs otherwise |
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
mainModule List
| (union :: [Ratio Int] -> [Ratio Int] -> [Ratio Int]) |
module List where
| import qualified Maybe import qualified Prelude
|
| deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
deleteBy | vw vx [] | = | [] |
deleteBy | eq x (y : ys) | = | deleteBy0 ys y eq x (x `eq` y) |
|
|
deleteBy0 | ys y eq x True | = | ys |
deleteBy0 | ys y eq x False | = | y : deleteBy eq x ys |
|
| elem_by :: (a -> a -> Bool) -> a -> [a] -> Bool
elem_by | vz wu [] | = | False |
elem_by | eq y (x : xs) | = | x `eq` y || elem_by eq y xs |
|
| nubBy :: (a -> a -> Bool) -> [a] -> [a]
nubBy | eq l | = | nubByNubBy' eq l [] |
|
|
nubByNubBy' | xx [] vy | = | nubByNubBy'3 xx [] vy |
nubByNubBy' | xx (y : ys) xs | = | nubByNubBy'2 xx (y : ys) xs |
|
|
nubByNubBy'0 | xx y ys xs True | = | y : nubByNubBy' xx ys (y : xs) |
|
|
nubByNubBy'1 | xx y ys xs True | = | nubByNubBy' xx ys xs |
nubByNubBy'1 | xx y ys xs False | = | nubByNubBy'0 xx y ys xs otherwise |
|
|
nubByNubBy'2 | xx (y : ys) xs | = | nubByNubBy'1 xx y ys xs (elem_by xx y xs) |
|
|
nubByNubBy'3 | xx [] vy | = | [] |
nubByNubBy'3 | xx xv xw | = | nubByNubBy'2 xx xv xw |
|
| union :: Eq a => [a] -> [a] -> [a]
|
| unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
unionBy | eq xs ys | = | xs ++ foldl (flip (deleteBy eq)) (nubBy eq ys) xs |
|
module Maybe where
| import qualified List import qualified Prelude
|
Haskell To QDPs
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_primEqNat(Succ(xy10000), Succ(xy90000)) → new_primEqNat(xy10000, xy90000)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_primEqNat(Succ(xy10000), Succ(xy90000)) → new_primEqNat(xy10000, xy90000)
The graph contains the following edges 1 > 1, 2 > 2
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_esEs(:%(xy100, xy101), :%(xy900, xy901), ba) → new_asAs(new_esEs0(xy100, xy900, ba), xy101, xy901, ba)
new_asAs(True, xy29, xy30, app(ty_Ratio, bb)) → new_esEs(xy29, xy30, bb)
The TRS R consists of the following rules:
new_primEqNat0(Zero, Succ(xy90000)) → False
new_primEqNat0(Succ(xy10000), Zero) → False
new_esEs1(Neg(Succ(xy1000)), Neg(Succ(xy9000))) → new_primEqNat0(xy1000, xy9000)
new_esEs0(xy100, xy900, ty_Integer) → new_esEs2(xy100, xy900)
new_esEs1(Pos(Zero), Pos(Zero)) → True
new_esEs2(xy10, xy90) → error([])
new_primEqNat0(Zero, Zero) → True
new_primEqNat0(Succ(xy10000), Succ(xy90000)) → new_primEqNat0(xy10000, xy90000)
new_esEs1(Neg(Succ(xy1000)), Pos(xy900)) → False
new_esEs1(Pos(Succ(xy1000)), Neg(xy900)) → False
new_esEs1(Neg(Succ(xy1000)), Neg(Zero)) → False
new_esEs1(Neg(Zero), Neg(Succ(xy9000))) → False
new_esEs1(Pos(Zero), Neg(Succ(xy9000))) → False
new_esEs1(Neg(Zero), Pos(Succ(xy9000))) → False
new_esEs1(Pos(Zero), Pos(Succ(xy9000))) → False
new_esEs1(Pos(Succ(xy1000)), Pos(Zero)) → False
new_esEs1(Neg(Zero), Neg(Zero)) → True
new_esEs1(Pos(Zero), Neg(Zero)) → True
new_esEs1(Neg(Zero), Pos(Zero)) → True
new_esEs0(xy100, xy900, ty_Int) → new_esEs1(xy100, xy900)
new_esEs1(Pos(Succ(xy1000)), Pos(Succ(xy9000))) → new_primEqNat0(xy1000, xy9000)
The set Q consists of the following terms:
new_esEs0(x0, x1, ty_Integer)
new_esEs1(Neg(Succ(x0)), Neg(Succ(x1)))
new_primEqNat0(Zero, Zero)
new_primEqNat0(Succ(x0), Zero)
new_esEs1(Pos(Succ(x0)), Neg(x1))
new_esEs1(Neg(Succ(x0)), Pos(x1))
new_esEs1(Pos(Zero), Pos(Succ(x0)))
new_primEqNat0(Zero, Succ(x0))
new_esEs1(Neg(Zero), Neg(Succ(x0)))
new_esEs1(Neg(Zero), Neg(Zero))
new_esEs1(Pos(Succ(x0)), Pos(Zero))
new_esEs1(Neg(Succ(x0)), Neg(Zero))
new_primEqNat0(Succ(x0), Succ(x1))
new_esEs2(x0, x1)
new_esEs1(Pos(Zero), Pos(Zero))
new_esEs1(Pos(Zero), Neg(Succ(x0)))
new_esEs1(Neg(Zero), Pos(Succ(x0)))
new_esEs1(Pos(Succ(x0)), Pos(Succ(x1)))
new_esEs1(Pos(Zero), Neg(Zero))
new_esEs1(Neg(Zero), Pos(Zero))
new_esEs0(x0, x1, ty_Int)
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_esEs(:%(xy100, xy101), :%(xy900, xy901), ba) → new_asAs(new_esEs0(xy100, xy900, ba), xy101, xy901, ba)
The graph contains the following edges 1 > 2, 2 > 3, 3 >= 4
- new_asAs(True, xy29, xy30, app(ty_Ratio, bb)) → new_esEs(xy29, xy30, bb)
The graph contains the following edges 2 >= 1, 3 >= 2, 4 > 3
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_nubByNubBy'(:(xy8270, xy8271), xy828, xy829, bb) → new_nubByNubBy'1(xy8270, xy8271, xy828, xy829, new_esEs4(xy828, xy8270, bb), xy829, bb)
new_nubByNubBy'1(xy919, xy920, xy921, xy922, False, :(xy9240, xy9241), ba) → new_nubByNubBy'1(xy919, xy920, xy921, xy922, new_esEs3(xy9240, xy919, ba), xy9241, ba)
new_nubByNubBy'1(xy919, xy920, xy921, xy922, False, [], ba) → new_nubByNubBy'(xy920, xy919, :(xy921, xy922), ba)
new_nubByNubBy'1(xy919, xy920, xy921, xy922, True, xy924, ba) → new_nubByNubBy'(xy920, xy921, xy922, ba)
The TRS R consists of the following rules:
new_asAs0(False, xy29, xy30, ce) → False
new_asAs0(True, xy29, xy30, ty_Ordering) → new_esEs6(xy29, xy30)
new_asAs0(True, xy29, xy30, ty_@0) → new_esEs12(xy29, xy30)
new_esEs4(xy828, xy8270, ty_Float) → new_esEs8(xy828, xy8270)
new_asAs0(True, xy29, xy30, ty_Int) → new_esEs1(xy29, xy30)
new_esEs3(xy9240, xy919, ty_Ordering) → new_esEs6(xy9240, xy919)
new_primEqNat0(Zero, Zero) → True
new_esEs16(xy10, xy90) → error([])
new_esEs1(Pos(Zero), Pos(Succ(xy9000))) → False
new_esEs1(Pos(Succ(xy1000)), Pos(Zero)) → False
new_esEs3(xy9240, xy919, ty_@0) → new_esEs12(xy9240, xy919)
new_esEs13(xy10, xy90) → error([])
new_esEs4(xy828, xy8270, ty_Bool) → new_esEs16(xy828, xy8270)
new_esEs3(xy9240, xy919, app(ty_Maybe, gd)) → new_esEs14(xy9240, xy919, gd)
new_esEs3(xy9240, xy919, ty_Integer) → new_esEs2(xy9240, xy919)
new_esEs12(xy10, xy90) → error([])
new_asAs0(True, xy29, xy30, app(ty_[], dh)) → new_esEs15(xy29, xy30, dh)
new_primEqNat0(Zero, Succ(xy90000)) → False
new_primEqNat0(Succ(xy10000), Zero) → False
new_esEs1(Neg(Succ(xy1000)), Neg(Succ(xy9000))) → new_primEqNat0(xy1000, xy9000)
new_asAs0(True, xy29, xy30, ty_Char) → new_esEs13(xy29, xy30)
new_esEs3(xy9240, xy919, app(ty_[], ge)) → new_esEs15(xy9240, xy919, ge)
new_esEs4(xy828, xy8270, app(app(ty_@2, bg), bh)) → new_esEs10(xy828, xy8270, bg, bh)
new_esEs4(xy828, xy8270, app(ty_Ratio, bf)) → new_esEs9(xy828, xy8270, bf)
new_esEs14(xy10, xy90, eb) → error([])
new_esEs4(xy828, xy8270, app(app(ty_Either, ca), cb)) → new_esEs11(xy828, xy8270, ca, cb)
new_asAs0(True, xy29, xy30, ty_Bool) → new_esEs16(xy29, xy30)
new_esEs3(xy9240, xy919, ty_Float) → new_esEs8(xy9240, xy919)
new_esEs4(xy828, xy8270, ty_Double) → new_esEs5(xy828, xy8270)
new_esEs4(xy828, xy8270, ty_@0) → new_esEs12(xy828, xy8270)
new_esEs11(xy10, xy90, ef, eg) → error([])
new_esEs10(xy10, xy90, fa, fb) → error([])
new_esEs5(xy10, xy90) → error([])
new_esEs2(xy10, xy90) → error([])
new_asAs0(True, xy29, xy30, app(ty_Ratio, db)) → new_esEs9(xy29, xy30, db)
new_esEs3(xy9240, xy919, ty_Char) → new_esEs13(xy9240, xy919)
new_esEs4(xy828, xy8270, ty_Char) → new_esEs13(xy828, xy8270)
new_esEs3(xy9240, xy919, ty_Int) → new_esEs1(xy9240, xy919)
new_esEs3(xy9240, xy919, app(app(ty_@2, fh), ga)) → new_esEs10(xy9240, xy919, fh, ga)
new_asAs0(True, xy29, xy30, app(ty_Maybe, dg)) → new_esEs14(xy29, xy30, dg)
new_primEqNat0(Succ(xy10000), Succ(xy90000)) → new_primEqNat0(xy10000, xy90000)
new_asAs0(True, xy29, xy30, ty_Double) → new_esEs5(xy29, xy30)
new_esEs4(xy828, xy8270, ty_Integer) → new_esEs2(xy828, xy8270)
new_asAs0(True, xy29, xy30, ty_Float) → new_esEs8(xy29, xy30)
new_esEs1(Neg(Succ(xy1000)), Pos(xy900)) → False
new_esEs1(Pos(Succ(xy1000)), Neg(xy900)) → False
new_esEs4(xy828, xy8270, app(ty_Maybe, cc)) → new_esEs14(xy828, xy8270, cc)
new_esEs1(Pos(Zero), Neg(Succ(xy9000))) → False
new_esEs1(Neg(Zero), Pos(Succ(xy9000))) → False
new_asAs0(True, xy29, xy30, app(app(ty_Either, de), df)) → new_esEs11(xy29, xy30, de, df)
new_esEs4(xy828, xy8270, app(app(app(ty_@3, bc), bd), be)) → new_esEs7(xy828, xy8270, bc, bd, be)
new_asAs0(True, xy29, xy30, app(app(app(ty_@3, cf), cg), da)) → new_esEs7(xy29, xy30, cf, cg, da)
new_esEs4(xy828, xy8270, app(ty_[], cd)) → new_esEs15(xy828, xy8270, cd)
new_esEs1(Neg(Zero), Neg(Zero)) → True
new_esEs1(Pos(Zero), Neg(Zero)) → True
new_asAs0(True, xy29, xy30, ty_Integer) → new_esEs2(xy29, xy30)
new_esEs1(Neg(Zero), Pos(Zero)) → True
new_esEs0(xy100, xy900, ty_Int) → new_esEs1(xy100, xy900)
new_esEs8(xy10, xy90) → error([])
new_esEs3(xy9240, xy919, app(app(app(ty_@3, fc), fd), ff)) → new_esEs7(xy9240, xy919, fc, fd, ff)
new_asAs0(True, xy29, xy30, app(app(ty_@2, dc), dd)) → new_esEs10(xy29, xy30, dc, dd)
new_esEs4(xy828, xy8270, ty_Ordering) → new_esEs6(xy828, xy8270)
new_esEs0(xy100, xy900, ty_Integer) → new_esEs2(xy100, xy900)
new_esEs1(Pos(Zero), Pos(Zero)) → True
new_esEs3(xy9240, xy919, app(app(ty_Either, gb), gc)) → new_esEs11(xy9240, xy919, gb, gc)
new_esEs3(xy9240, xy919, ty_Double) → new_esEs5(xy9240, xy919)
new_esEs3(xy9240, xy919, ty_Bool) → new_esEs16(xy9240, xy919)
new_esEs9(:%(xy100, xy101), :%(xy900, xy901), eh) → new_asAs0(new_esEs0(xy100, xy900, eh), xy101, xy901, eh)
new_esEs1(Neg(Succ(xy1000)), Neg(Zero)) → False
new_esEs1(Neg(Zero), Neg(Succ(xy9000))) → False
new_esEs4(xy828, xy8270, ty_Int) → new_esEs1(xy828, xy8270)
new_esEs3(xy9240, xy919, app(ty_Ratio, fg)) → new_esEs9(xy9240, xy919, fg)
new_esEs6(xy10, xy90) → error([])
new_esEs7(xy10, xy90, ec, ed, ee) → error([])
new_esEs15(xy10, xy90, ea) → error([])
new_esEs1(Pos(Succ(xy1000)), Pos(Succ(xy9000))) → new_primEqNat0(xy1000, xy9000)
The set Q consists of the following terms:
new_asAs0(True, x0, x1, app(ty_Maybe, x2))
new_esEs15(x0, x1, x2)
new_esEs1(Neg(Succ(x0)), Neg(Succ(x1)))
new_esEs16(x0, x1)
new_esEs1(Pos(Succ(x0)), Neg(x1))
new_esEs1(Neg(Succ(x0)), Pos(x1))
new_esEs4(x0, x1, ty_Int)
new_esEs3(x0, x1, ty_Integer)
new_esEs1(Pos(Zero), Pos(Succ(x0)))
new_asAs0(True, x0, x1, ty_Float)
new_asAs0(True, x0, x1, app(ty_[], x2))
new_asAs0(True, x0, x1, app(app(ty_@2, x2), x3))
new_esEs4(x0, x1, ty_@0)
new_esEs1(Neg(Succ(x0)), Neg(Zero))
new_asAs0(False, x0, x1, x2)
new_esEs6(x0, x1)
new_esEs3(x0, x1, ty_Ordering)
new_esEs4(x0, x1, app(ty_Maybe, x2))
new_esEs1(Pos(Zero), Pos(Zero))
new_esEs3(x0, x1, ty_@0)
new_asAs0(True, x0, x1, app(app(ty_Either, x2), x3))
new_esEs4(x0, x1, app(ty_[], x2))
new_esEs3(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs14(x0, x1, x2)
new_esEs1(Neg(Zero), Neg(Succ(x0)))
new_esEs3(x0, x1, ty_Float)
new_esEs13(x0, x1)
new_esEs1(Neg(Zero), Neg(Zero))
new_esEs3(x0, x1, ty_Bool)
new_esEs4(x0, x1, ty_Bool)
new_esEs5(x0, x1)
new_esEs9(:%(x0, x1), :%(x2, x3), x4)
new_esEs4(x0, x1, app(ty_Ratio, x2))
new_esEs12(x0, x1)
new_esEs4(x0, x1, ty_Ordering)
new_esEs11(x0, x1, x2, x3)
new_esEs2(x0, x1)
new_asAs0(True, x0, x1, app(ty_Ratio, x2))
new_asAs0(True, x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs0(x0, x1, ty_Int)
new_asAs0(True, x0, x1, ty_Int)
new_asAs0(True, x0, x1, ty_Ordering)
new_asAs0(True, x0, x1, ty_Integer)
new_esEs10(x0, x1, x2, x3)
new_esEs7(x0, x1, x2, x3, x4)
new_primEqNat0(Zero, Succ(x0))
new_asAs0(True, x0, x1, ty_Double)
new_esEs4(x0, x1, ty_Integer)
new_esEs8(x0, x1)
new_esEs3(x0, x1, app(ty_Maybe, x2))
new_asAs0(True, x0, x1, ty_@0)
new_esEs4(x0, x1, app(app(ty_@2, x2), x3))
new_esEs3(x0, x1, app(app(ty_Either, x2), x3))
new_asAs0(True, x0, x1, ty_Bool)
new_esEs3(x0, x1, app(ty_Ratio, x2))
new_esEs1(Neg(Zero), Pos(Succ(x0)))
new_esEs1(Pos(Zero), Neg(Succ(x0)))
new_esEs1(Pos(Succ(x0)), Pos(Succ(x1)))
new_esEs3(x0, x1, ty_Int)
new_esEs0(x0, x1, ty_Integer)
new_primEqNat0(Zero, Zero)
new_esEs3(x0, x1, ty_Double)
new_esEs4(x0, x1, ty_Float)
new_primEqNat0(Succ(x0), Zero)
new_esEs4(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs1(Pos(Succ(x0)), Pos(Zero))
new_esEs3(x0, x1, ty_Char)
new_esEs4(x0, x1, app(app(ty_Either, x2), x3))
new_esEs4(x0, x1, ty_Char)
new_primEqNat0(Succ(x0), Succ(x1))
new_esEs3(x0, x1, app(ty_[], x2))
new_esEs1(Pos(Zero), Neg(Zero))
new_esEs1(Neg(Zero), Pos(Zero))
new_esEs4(x0, x1, ty_Double)
new_esEs3(x0, x1, app(app(ty_@2, x2), x3))
new_asAs0(True, x0, x1, ty_Char)
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_nubByNubBy'1(xy919, xy920, xy921, xy922, False, :(xy9240, xy9241), ba) → new_nubByNubBy'1(xy919, xy920, xy921, xy922, new_esEs3(xy9240, xy919, ba), xy9241, ba)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 6 > 6, 7 >= 7
- new_nubByNubBy'(:(xy8270, xy8271), xy828, xy829, bb) → new_nubByNubBy'1(xy8270, xy8271, xy828, xy829, new_esEs4(xy828, xy8270, bb), xy829, bb)
The graph contains the following edges 1 > 1, 1 > 2, 2 >= 3, 3 >= 4, 3 >= 6, 4 >= 7
- new_nubByNubBy'1(xy919, xy920, xy921, xy922, False, [], ba) → new_nubByNubBy'(xy920, xy919, :(xy921, xy922), ba)
The graph contains the following edges 2 >= 1, 1 >= 2, 7 >= 4
- new_nubByNubBy'1(xy919, xy920, xy921, xy922, True, xy924, ba) → new_nubByNubBy'(xy920, xy921, xy922, ba)
The graph contains the following edges 2 >= 1, 3 >= 2, 4 >= 3, 7 >= 4
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_deleteBy(xy10, :(xy90, xy91), bb) → new_deleteBy0(xy91, xy90, xy10, new_esEs17(xy10, xy90, bb), bb)
new_deleteBy0(xy17, xy18, xy19, False, ba) → new_deleteBy(xy19, xy17, ba)
The TRS R consists of the following rules:
new_asAs0(False, xy29, xy30, bc) → False
new_asAs0(True, xy29, xy30, ty_Ordering) → new_esEs6(xy29, xy30)
new_esEs17(xy10, xy90, app(app(ty_Either, dg), dh)) → new_esEs11(xy10, xy90, dg, dh)
new_asAs0(True, xy29, xy30, ty_@0) → new_esEs12(xy29, xy30)
new_asAs0(True, xy29, xy30, ty_Int) → new_esEs1(xy29, xy30)
new_primEqNat0(Zero, Zero) → True
new_esEs17(xy10, xy90, ty_Char) → new_esEs13(xy10, xy90)
new_esEs16(xy10, xy90) → error([])
new_esEs17(xy10, xy90, ty_Integer) → new_esEs2(xy10, xy90)
new_esEs1(Pos(Zero), Pos(Succ(xy9000))) → False
new_esEs1(Pos(Succ(xy1000)), Pos(Zero)) → False
new_esEs13(xy10, xy90) → error([])
new_esEs17(xy10, xy90, ty_@0) → new_esEs12(xy10, xy90)
new_esEs17(xy10, xy90, ty_Float) → new_esEs8(xy10, xy90)
new_esEs17(xy10, xy90, app(app(app(ty_@3, da), db), dc)) → new_esEs7(xy10, xy90, da, db, dc)
new_esEs12(xy10, xy90) → error([])
new_primEqNat0(Zero, Succ(xy90000)) → False
new_primEqNat0(Succ(xy10000), Zero) → False
new_asAs0(True, xy29, xy30, app(ty_[], ce)) → new_esEs15(xy29, xy30, ce)
new_esEs1(Neg(Succ(xy1000)), Neg(Succ(xy9000))) → new_primEqNat0(xy1000, xy9000)
new_asAs0(True, xy29, xy30, ty_Char) → new_esEs13(xy29, xy30)
new_esEs17(xy10, xy90, app(ty_Maybe, cg)) → new_esEs14(xy10, xy90, cg)
new_esEs14(xy10, xy90, cg) → error([])
new_asAs0(True, xy29, xy30, ty_Bool) → new_esEs16(xy29, xy30)
new_esEs17(xy10, xy90, ty_Int) → new_esEs1(xy10, xy90)
new_esEs17(xy10, xy90, app(ty_Ratio, dd)) → new_esEs9(xy10, xy90, dd)
new_esEs11(xy10, xy90, dg, dh) → error([])
new_esEs10(xy10, xy90, de, df) → error([])
new_esEs5(xy10, xy90) → error([])
new_esEs17(xy10, xy90, ty_Double) → new_esEs5(xy10, xy90)
new_asAs0(True, xy29, xy30, app(ty_Ratio, bg)) → new_esEs9(xy29, xy30, bg)
new_esEs2(xy10, xy90) → error([])
new_esEs17(xy10, xy90, ty_Ordering) → new_esEs6(xy10, xy90)
new_primEqNat0(Succ(xy10000), Succ(xy90000)) → new_primEqNat0(xy10000, xy90000)
new_asAs0(True, xy29, xy30, app(ty_Maybe, cd)) → new_esEs14(xy29, xy30, cd)
new_asAs0(True, xy29, xy30, ty_Double) → new_esEs5(xy29, xy30)
new_asAs0(True, xy29, xy30, ty_Float) → new_esEs8(xy29, xy30)
new_esEs1(Neg(Succ(xy1000)), Pos(xy900)) → False
new_esEs1(Pos(Succ(xy1000)), Neg(xy900)) → False
new_esEs1(Neg(Zero), Pos(Succ(xy9000))) → False
new_esEs1(Pos(Zero), Neg(Succ(xy9000))) → False
new_asAs0(True, xy29, xy30, app(app(ty_Either, cb), cc)) → new_esEs11(xy29, xy30, cb, cc)
new_asAs0(True, xy29, xy30, app(app(app(ty_@3, bd), be), bf)) → new_esEs7(xy29, xy30, bd, be, bf)
new_esEs1(Neg(Zero), Neg(Zero)) → True
new_esEs1(Neg(Zero), Pos(Zero)) → True
new_esEs1(Pos(Zero), Neg(Zero)) → True
new_asAs0(True, xy29, xy30, ty_Integer) → new_esEs2(xy29, xy30)
new_esEs17(xy10, xy90, app(ty_[], cf)) → new_esEs15(xy10, xy90, cf)
new_esEs0(xy100, xy900, ty_Int) → new_esEs1(xy100, xy900)
new_esEs8(xy10, xy90) → error([])
new_asAs0(True, xy29, xy30, app(app(ty_@2, bh), ca)) → new_esEs10(xy29, xy30, bh, ca)
new_esEs0(xy100, xy900, ty_Integer) → new_esEs2(xy100, xy900)
new_esEs1(Pos(Zero), Pos(Zero)) → True
new_esEs17(xy10, xy90, ty_Bool) → new_esEs16(xy10, xy90)
new_esEs9(:%(xy100, xy101), :%(xy900, xy901), dd) → new_asAs0(new_esEs0(xy100, xy900, dd), xy101, xy901, dd)
new_esEs1(Neg(Zero), Neg(Succ(xy9000))) → False
new_esEs1(Neg(Succ(xy1000)), Neg(Zero)) → False
new_esEs7(xy10, xy90, da, db, dc) → error([])
new_esEs6(xy10, xy90) → error([])
new_esEs15(xy10, xy90, cf) → error([])
new_esEs17(xy10, xy90, app(app(ty_@2, de), df)) → new_esEs10(xy10, xy90, de, df)
new_esEs1(Pos(Succ(xy1000)), Pos(Succ(xy9000))) → new_primEqNat0(xy1000, xy9000)
The set Q consists of the following terms:
new_esEs1(Neg(Succ(x0)), Neg(Succ(x1)))
new_esEs16(x0, x1)
new_esEs17(x0, x1, app(app(ty_@2, x2), x3))
new_esEs1(Pos(Succ(x0)), Neg(x1))
new_esEs1(Neg(Succ(x0)), Pos(x1))
new_esEs1(Pos(Zero), Pos(Succ(x0)))
new_asAs0(True, x0, x1, ty_Float)
new_esEs1(Neg(Succ(x0)), Neg(Zero))
new_esEs6(x0, x1)
new_asAs0(False, x0, x1, x2)
new_asAs0(True, x0, x1, app(ty_Maybe, x2))
new_esEs1(Pos(Zero), Pos(Zero))
new_asAs0(True, x0, x1, app(ty_[], x2))
new_esEs17(x0, x1, app(ty_Ratio, x2))
new_esEs1(Neg(Zero), Neg(Succ(x0)))
new_esEs13(x0, x1)
new_esEs1(Neg(Zero), Neg(Zero))
new_esEs15(x0, x1, x2)
new_asAs0(True, x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_esEs11(x0, x1, x2, x3)
new_esEs9(:%(x0, x1), :%(x2, x3), x4)
new_esEs5(x0, x1)
new_esEs12(x0, x1)
new_esEs2(x0, x1)
new_esEs7(x0, x1, x2, x3, x4)
new_esEs17(x0, x1, ty_Bool)
new_esEs17(x0, x1, ty_@0)
new_esEs0(x0, x1, ty_Int)
new_esEs17(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_asAs0(True, x0, x1, ty_Int)
new_asAs0(True, x0, x1, app(app(ty_@2, x2), x3))
new_asAs0(True, x0, x1, ty_Ordering)
new_esEs17(x0, x1, app(ty_[], x2))
new_esEs14(x0, x1, x2)
new_asAs0(True, x0, x1, ty_Integer)
new_esEs17(x0, x1, ty_Integer)
new_primEqNat0(Zero, Succ(x0))
new_asAs0(True, x0, x1, ty_Double)
new_esEs8(x0, x1)
new_esEs17(x0, x1, app(app(ty_Either, x2), x3))
new_asAs0(True, x0, x1, ty_@0)
new_esEs17(x0, x1, ty_Char)
new_esEs17(x0, x1, app(ty_Maybe, x2))
new_asAs0(True, x0, x1, app(app(ty_Either, x2), x3))
new_esEs10(x0, x1, x2, x3)
new_asAs0(True, x0, x1, ty_Bool)
new_asAs0(True, x0, x1, app(ty_Ratio, x2))
new_esEs1(Pos(Zero), Neg(Succ(x0)))
new_esEs1(Neg(Zero), Pos(Succ(x0)))
new_esEs1(Pos(Succ(x0)), Pos(Succ(x1)))
new_esEs17(x0, x1, ty_Ordering)
new_esEs0(x0, x1, ty_Integer)
new_primEqNat0(Zero, Zero)
new_primEqNat0(Succ(x0), Zero)
new_esEs17(x0, x1, ty_Double)
new_esEs1(Pos(Succ(x0)), Pos(Zero))
new_esEs17(x0, x1, ty_Int)
new_primEqNat0(Succ(x0), Succ(x1))
new_esEs17(x0, x1, ty_Float)
new_esEs1(Pos(Zero), Neg(Zero))
new_esEs1(Neg(Zero), Pos(Zero))
new_asAs0(True, x0, x1, ty_Char)
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_deleteBy0(xy17, xy18, xy19, False, ba) → new_deleteBy(xy19, xy17, ba)
The graph contains the following edges 3 >= 1, 1 >= 2, 5 >= 3
- new_deleteBy(xy10, :(xy90, xy91), bb) → new_deleteBy0(xy91, xy90, xy10, new_esEs17(xy10, xy90, bb), bb)
The graph contains the following edges 2 > 1, 2 > 2, 1 >= 3, 3 >= 5
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_foldl(xy9, xy10, :(xy110, xy111), ba) → new_foldl(new_flip(xy9, xy10, ba), xy110, xy111, ba)
The TRS R consists of the following rules:
new_asAs0(False, xy29, xy30, bb) → False
new_asAs0(True, xy29, xy30, ty_Ordering) → new_esEs6(xy29, xy30)
new_esEs17(xy10, xy90, app(app(ty_Either, dg), dh)) → new_esEs11(xy10, xy90, dg, dh)
new_asAs0(True, xy29, xy30, ty_@0) → new_esEs12(xy29, xy30)
new_asAs0(True, xy29, xy30, ty_Int) → new_esEs1(xy29, xy30)
new_primEqNat0(Zero, Zero) → True
new_esEs17(xy10, xy90, ty_Char) → new_esEs13(xy10, xy90)
new_esEs16(xy10, xy90) → error([])
new_esEs17(xy10, xy90, ty_Integer) → new_esEs2(xy10, xy90)
new_esEs1(Pos(Zero), Pos(Succ(xy9000))) → False
new_esEs1(Pos(Succ(xy1000)), Pos(Zero)) → False
new_esEs13(xy10, xy90) → error([])
new_esEs17(xy10, xy90, ty_@0) → new_esEs12(xy10, xy90)
new_deleteBy1(xy10, [], ba) → []
new_esEs17(xy10, xy90, ty_Float) → new_esEs8(xy10, xy90)
new_esEs17(xy10, xy90, app(app(app(ty_@3, da), db), dc)) → new_esEs7(xy10, xy90, da, db, dc)
new_esEs12(xy10, xy90) → error([])
new_primEqNat0(Zero, Succ(xy90000)) → False
new_primEqNat0(Succ(xy10000), Zero) → False
new_asAs0(True, xy29, xy30, app(ty_[], cd)) → new_esEs15(xy29, xy30, cd)
new_esEs1(Neg(Succ(xy1000)), Neg(Succ(xy9000))) → new_primEqNat0(xy1000, xy9000)
new_asAs0(True, xy29, xy30, ty_Char) → new_esEs13(xy29, xy30)
new_deleteBy00(xy17, xy18, xy19, False, cf) → :(xy18, new_deleteBy1(xy19, xy17, cf))
new_esEs17(xy10, xy90, app(ty_Maybe, cg)) → new_esEs14(xy10, xy90, cg)
new_esEs14(xy10, xy90, cg) → error([])
new_asAs0(True, xy29, xy30, ty_Bool) → new_esEs16(xy29, xy30)
new_esEs17(xy10, xy90, ty_Int) → new_esEs1(xy10, xy90)
new_esEs17(xy10, xy90, app(ty_Ratio, dd)) → new_esEs9(xy10, xy90, dd)
new_esEs11(xy10, xy90, dg, dh) → error([])
new_esEs10(xy10, xy90, de, df) → error([])
new_esEs5(xy10, xy90) → error([])
new_esEs17(xy10, xy90, ty_Double) → new_esEs5(xy10, xy90)
new_esEs2(xy10, xy90) → error([])
new_asAs0(True, xy29, xy30, app(ty_Ratio, bf)) → new_esEs9(xy29, xy30, bf)
new_deleteBy00(xy17, xy18, xy19, True, cf) → xy17
new_esEs17(xy10, xy90, ty_Ordering) → new_esEs6(xy10, xy90)
new_primEqNat0(Succ(xy10000), Succ(xy90000)) → new_primEqNat0(xy10000, xy90000)
new_asAs0(True, xy29, xy30, app(ty_Maybe, cc)) → new_esEs14(xy29, xy30, cc)
new_asAs0(True, xy29, xy30, ty_Double) → new_esEs5(xy29, xy30)
new_asAs0(True, xy29, xy30, ty_Float) → new_esEs8(xy29, xy30)
new_esEs1(Neg(Succ(xy1000)), Pos(xy900)) → False
new_esEs1(Pos(Succ(xy1000)), Neg(xy900)) → False
new_deleteBy1(xy10, :(xy90, xy91), ba) → new_deleteBy00(xy91, xy90, xy10, new_esEs17(xy10, xy90, ba), ba)
new_esEs1(Neg(Zero), Pos(Succ(xy9000))) → False
new_esEs1(Pos(Zero), Neg(Succ(xy9000))) → False
new_asAs0(True, xy29, xy30, app(app(ty_Either, ca), cb)) → new_esEs11(xy29, xy30, ca, cb)
new_asAs0(True, xy29, xy30, app(app(app(ty_@3, bc), bd), be)) → new_esEs7(xy29, xy30, bc, bd, be)
new_esEs1(Neg(Zero), Neg(Zero)) → True
new_esEs1(Neg(Zero), Pos(Zero)) → True
new_esEs1(Pos(Zero), Neg(Zero)) → True
new_asAs0(True, xy29, xy30, ty_Integer) → new_esEs2(xy29, xy30)
new_esEs17(xy10, xy90, app(ty_[], ce)) → new_esEs15(xy10, xy90, ce)
new_esEs0(xy100, xy900, ty_Int) → new_esEs1(xy100, xy900)
new_esEs8(xy10, xy90) → error([])
new_asAs0(True, xy29, xy30, app(app(ty_@2, bg), bh)) → new_esEs10(xy29, xy30, bg, bh)
new_esEs0(xy100, xy900, ty_Integer) → new_esEs2(xy100, xy900)
new_esEs1(Pos(Zero), Pos(Zero)) → True
new_esEs17(xy10, xy90, ty_Bool) → new_esEs16(xy10, xy90)
new_esEs9(:%(xy100, xy101), :%(xy900, xy901), dd) → new_asAs0(new_esEs0(xy100, xy900, dd), xy101, xy901, dd)
new_esEs1(Neg(Zero), Neg(Succ(xy9000))) → False
new_esEs1(Neg(Succ(xy1000)), Neg(Zero)) → False
new_flip(xy9, xy10, ba) → new_deleteBy1(xy10, xy9, ba)
new_esEs6(xy10, xy90) → error([])
new_esEs7(xy10, xy90, da, db, dc) → error([])
new_esEs15(xy10, xy90, ce) → error([])
new_esEs17(xy10, xy90, app(app(ty_@2, de), df)) → new_esEs10(xy10, xy90, de, df)
new_esEs1(Pos(Succ(xy1000)), Pos(Succ(xy9000))) → new_primEqNat0(xy1000, xy9000)
The set Q consists of the following terms:
new_asAs0(False, x0, x1, x2)
new_esEs1(Neg(Succ(x0)), Neg(Succ(x1)))
new_esEs16(x0, x1)
new_esEs17(x0, x1, app(app(ty_@2, x2), x3))
new_esEs1(Pos(Succ(x0)), Neg(x1))
new_esEs1(Neg(Succ(x0)), Pos(x1))
new_deleteBy00(x0, x1, x2, True, x3)
new_esEs1(Pos(Zero), Pos(Succ(x0)))
new_asAs0(True, x0, x1, ty_Float)
new_esEs1(Neg(Succ(x0)), Neg(Zero))
new_esEs15(x0, x1, x2)
new_esEs6(x0, x1)
new_asAs0(True, x0, x1, app(ty_[], x2))
new_esEs1(Pos(Zero), Pos(Zero))
new_esEs17(x0, x1, app(ty_[], x2))
new_esEs17(x0, x1, app(ty_Ratio, x2))
new_asAs0(True, x0, x1, app(app(ty_@2, x2), x3))
new_esEs1(Neg(Zero), Neg(Succ(x0)))
new_esEs13(x0, x1)
new_esEs1(Neg(Zero), Neg(Zero))
new_esEs11(x0, x1, x2, x3)
new_esEs9(:%(x0, x1), :%(x2, x3), x4)
new_esEs5(x0, x1)
new_esEs12(x0, x1)
new_esEs2(x0, x1)
new_esEs7(x0, x1, x2, x3, x4)
new_esEs17(x0, x1, ty_Bool)
new_esEs0(x0, x1, ty_Int)
new_esEs17(x0, x1, ty_@0)
new_esEs17(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_asAs0(True, x0, x1, ty_Int)
new_asAs0(True, x0, x1, ty_Ordering)
new_esEs14(x0, x1, x2)
new_asAs0(True, x0, x1, ty_Integer)
new_asAs0(True, x0, x1, app(app(ty_Either, x2), x3))
new_esEs17(x0, x1, ty_Integer)
new_primEqNat0(Zero, Succ(x0))
new_asAs0(True, x0, x1, ty_Double)
new_deleteBy1(x0, :(x1, x2), x3)
new_esEs8(x0, x1)
new_esEs17(x0, x1, app(app(ty_Either, x2), x3))
new_asAs0(True, x0, x1, ty_@0)
new_esEs17(x0, x1, ty_Char)
new_asAs0(True, x0, x1, app(ty_Ratio, x2))
new_esEs17(x0, x1, app(ty_Maybe, x2))
new_esEs10(x0, x1, x2, x3)
new_deleteBy1(x0, [], x1)
new_asAs0(True, x0, x1, ty_Bool)
new_deleteBy00(x0, x1, x2, False, x3)
new_esEs1(Pos(Zero), Neg(Succ(x0)))
new_esEs1(Neg(Zero), Pos(Succ(x0)))
new_esEs1(Pos(Succ(x0)), Pos(Succ(x1)))
new_esEs17(x0, x1, ty_Ordering)
new_asAs0(True, x0, x1, app(ty_Maybe, x2))
new_esEs0(x0, x1, ty_Integer)
new_primEqNat0(Zero, Zero)
new_asAs0(True, x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_primEqNat0(Succ(x0), Zero)
new_flip(x0, x1, x2)
new_esEs17(x0, x1, ty_Double)
new_esEs1(Pos(Succ(x0)), Pos(Zero))
new_esEs17(x0, x1, ty_Int)
new_primEqNat0(Succ(x0), Succ(x1))
new_esEs17(x0, x1, ty_Float)
new_esEs1(Neg(Zero), Pos(Zero))
new_esEs1(Pos(Zero), Neg(Zero))
new_asAs0(True, x0, x1, ty_Char)
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_foldl(xy9, xy10, :(xy110, xy111), ba) → new_foldl(new_flip(xy9, xy10, ba), xy110, xy111, ba)
The graph contains the following edges 3 > 2, 3 > 3, 4 >= 4
↳ HASKELL
↳ IFR
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ LetRed
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
Q DP problem:
The TRS P consists of the following rules:
new_psPs(:(xy80, xy81), xy9, xy10, xy11, ba) → new_psPs(xy81, xy9, xy10, xy11, ba)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_psPs(:(xy80, xy81), xy9, xy10, xy11, ba) → new_psPs(xy81, xy9, xy10, xy11, ba)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5